package com.cw.DesignModel23.Structural.CompositePattern.Composite1;

/**
 * 书籍和目录的抽象父类
 * 目录组件
 *      目录 和 书籍 都继承 CatalogComponent 接口
 *      子类根据当前的的类型 , 选择性重写接口
 */

/**
 * 抽象类中所有的方法 都抛出异常 , 子类重写需要的方法 , 如果子类实例对象调用没有重写的方法 , 就会抛出异常 ;
 */
public abstract class CatalogComponent {
    /**
     * 添加元素
     * @param catalogComponent
     */
    public void add(CatalogComponent catalogComponent) {
        throw new UnsupportedOperationException("不支持的操作");
    }

    /**
     * 删除元素
     * @param catalogComponent
     */
    public void remove(CatalogComponent catalogComponent) {
        throw new UnsupportedOperationException("不支持的操作");
    }

    /**
     * 获取名称
     * @param catalogComponent
     */
    public String getName(CatalogComponent catalogComponent) {
        throw new UnsupportedOperationException("不支持的操作");
    }

    /**
     * 获取价格
     * @param catalogComponent
     * @return
     */
    public double getPrice(CatalogComponent catalogComponent) {
        throw new UnsupportedOperationException("不支持的操作");
    }

    /**
     * 如果该组件是目录 , 直接打印目录
     * 如果该组件是书籍 , 直接打印课程
     */
    public void printf() {
        throw new UnsupportedOperationException("不支持的操作");
    }


}

